package org.jheuristics.ga.multiObjective;

import org.jheuristics.ga.DoubleFitness;

/**
 * TODO
 *
 * @author Marcell Manfrin, marcell@ourgrid.org, Oct 28, 2005
 * @author Thiago Emmanuel Pereira da Cunha Silva, thiagoepdc@ourgrid.org, Oct 28, 2005
 */
public interface MultiObjectiveFitness extends DoubleFitness {

	/**
	 * TODO
	 *
	 * @return
	 */
	public Comparable[] getObjectives();

	/**
	 * Returns who dominates who.
	 *
	 * @param otherFit Other MultiObjectiveFitness
	 * @return <code>-1</code> if <code>otherFit</code> dominates <code>this</code>, <code>1</code> if <code>this</code> dominates <code>otherFit</code>, otherwise <code>0</code>.
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	public int relatesTo(Object otherFit);

	/**
	 * TODO
	 *
	 * @return
	 */
	public double getDensity();

	/**
	 * TODO
	 *
	 * @param density
	 */
	public void setDensity(double density);

	/**
	 * TODO
	 *
	 * @param rawFitness
	 */
	public void setRawFitness(double rawFitness);

	/**
	 * TODO
	 *
	 * @return
	 */
	public double getRawFitness();

}
